/*
 * PublishScheduleWindowController.java
 * 
 * Copyright (c) 2008, Marshall Scorcio, Ralph Holzmann, 
 *                     Stewart Sweet, Tyler Hoersch, Jeffery Van Handel
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the University of Wisconsin Oshkosh nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS'' AND 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 */

import javax.swing.*;
import java.util.*;

public class PublishScheduleWindowController implements ViewEventListener
{
    private PublishScheduleWindow publishScheduleWindow;
    private Schedule schedule;
    private Vector<Employee> employees;
                
    public PublishScheduleWindowController(Schedule schedule)
    {
        this.schedule = schedule;
        publishScheduleWindow = new PublishScheduleWindow(schedule.toString());
        publishScheduleWindow.addViewEventListener(this);
        publishScheduleWindow.setVisible(true);
    }
    
    public void setEmployees(Vector<Employee> employees)
    {
        this.employees = employees;
    }
        
    public void viewEventOccurred(ViewEvent event)
    {
        if (event.toString().equals("ViewSchedule"))
        {
            viewSchedule();
        }
        else if (event.toString().equals("Ok"))
        {
            if (publishScheduleWindow.isPrintScheduleSelected())
            {
                printSchedule();
            }
            
            if (publishScheduleWindow.isEmailScheduleSelected())
            {
                emailSchedule();
            }
        }
    }
    
    private void viewSchedule()
    {
        ScheduleViewerWindow viewSchedule = new ScheduleViewerWindow(schedule.toString(), schedule.getFullSchedule(employees));
        viewSchedule.setVisible(true);
    }
    
    private void emailSchedule()
    {
        Emailer emailer = new Emailer();
        String[] to = {"ralphholzmann@gmail.com", "vanhaj85@uwosh.edu", "sweets60@uwosh.edu", "hoerst88@uwosh.edu", "marshall.scorcio@gmail.com"};
        
        try
        {
            emailer.postMail(to, "Your Work Schedule", "This is a test email sent from Verdandi's publish schedule dialog box.", "emailer@verdandi.com");
        }
        catch (Exception exception)
        {
            JOptionPane.showMessageDialog(publishScheduleWindow, "Error: " + exception.getMessage(), "Error Sending Email!",  JOptionPane.ERROR_MESSAGE);
        }
    }
    
    private void printSchedule()
    {
        PrintViewWindow view = new PrintViewWindow(schedule.toString(), schedule.getFullSchedule(employees));
        view.setVisible(true);
        view.printSchedule(schedule.toString());
        view.setVisible(false);
    }
}
